home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 26.zip
/
BS1 part 26
/
Maverick v4.01.adf
/
RequesterLibrary
/
RequesterLibrary.LZH
/
reqbase.i
< prev
Wrap
Text File
|
1992-03-06
|
20KB
|
561 lines
; reqlibrary.i (c) 1988/1989 reserved by Colin Fox and Bruce Dawson */
IFND REQ_LIBRARY_I
REQ_LIBRARY_I SET 1
INCDIR ":include/"
INCLUDE "intuition/intuition.i"
INCLUDE "libraries/dos.i"
INCLUDE "libraries/dosextens.i"
INCLUDE "exec/memory.i"
INCLUDE "exec/initializers.i"
INCLUDE "exec/alerts.i"
ReqVersion EQU 1
PairsSize EQU 20
STRUCTURE GadgetBlock.,0 ;a boolean button style text gadget
STRUCT gb_Gadget,gg_SIZEOF
STRUCT gb_Border,bd_SIZEOF
STRUCT gb_Pairs,PairsSize
STRUCT gb_Text,it_SIZEOF
LABEL gb_SIZEOF
STRUCTURE StringBlock.,0 ;a string gadget
STRUCT sb_Gadget,gg_SIZEOF
STRUCT sb_Info,si_SIZEOF
STRUCT sb_Border,bd_SIZEOF
STRUCT sb_Pairs,PairsSize
LABEL sb_SIZEOF
STRUCTURE PropBlock.,0 ;a prop gadget
STRUCT pb_Gadget,gg_SIZEOF
STRUCT pb_Info,pi_SIZEOF
STRUCT pb_Image,ig_SIZEOF
LABEL pb_SIZEOF
STRUCTURE SliderBlock.,0 ;a slider (two arrows & a prop)
STRUCT slb_ArrowUpLt,gg_SIZEOF
STRUCT slb_ImageUpLt,ig_SIZEOF
STRUCT slb_ArrowDnRt,gg_SIZEOF
STRUCT slb_ImageDnRt,ig_SIZEOF
STRUCT slb_Prop,pb_SIZEOF ;this is at the end for REFRESH GLIST pu
poses
LABEL slb_SIZEOF
STRUCTURE TwoImageBlock,0
STRUCT tib_Gadget,gg_SIZEOF
STRUCT tib_Image1,ig_SIZEOF
STRUCT tib_Image2,ig_SIZEOF
LABEL tib_SIZEOF
ATTITUDEB EQU 16 ;Bit# of the attitude bit.
HorizSlider EQU 0<<ATTITUDEB ;which way the slider stands
VertSlider EQU 1<<ATTITUDEB ;This is so that it bypasses all gadget
lags.
; This structure is use with the TextRequester function.
STRUCTURE TRStructure,0
APTR TR_Text ;This is the message text, including pri
tf() style formatting if desired.
APTR TR_Controls ;This is the address of the parameter li
t, if printf() style formatting is used.
APTR TR_Window ;This is an optional (zero if not used)
ointer to a window on the screen you
;would like the requester to show up on.
APTR TR_MiddleText ;If non-zero, this is the text for the g
dget in the lower middle (returns 2).
APTR TR_PositiveText ;If non-zero, this is the text for the g
dget in the lower left hand corner (returns 1).
APTR TR_NegativeText ;If non-zero, this is the text for the g
dget in the lower right (returns 0).
APTR TR_Title ;This is the title for the window.
WORD TR_KeyMask ;This is the qualifier mask for the keyb
ard shortcuts.
;Use $FFFF to allow any qualifiers (or n
ne).
;Zero means that no keyboard shortcuts a
e allowed.
WORD TR_textcolor ;Color of the text. Uses Color 1 if no
olor specified.
WORD TR_detailcolor ;Detail and block color, as in a NewWind
w structure. If
WORD TR_blockcolor ;both are left zero, block pen will be s
t to 1.
WORD TR_versionnumber ;Make SURE this is set to zero.
LONG TR_rfu1 ;Make SURE you leave these two zeroed al
o.
LONG TR_rfu2 ;Make SURE you leave these two zeroed al
o.
LABEL TR_SIZEOF
;/* NOTE:
;
; The control values mentioned above are used if you choose to insert
;printf style directives in your strings and should contain the address of
;a list of control parameters, usually on the stack.
; */
; This structure is for use with the GetLong function.
GLNODEFAULTB EQU 0 ;Set this bit in the flags if you don't want a d
fault
;value to show up in the get long string gadget.
For
;some things this is much better than having a z
ro
;show up.
GLNODEFAULTM EQU 1<<GLNODEFAULTB
STRUCTURE GetLongStruct,0
APTR gl_titlebar
LONG gl_defaultval
LONG gl_minlimit
LONG gl_maxlimit
LONG gl_result
APTR gl_window
WORD gl_versionnumber; ;Make SURE this is set to zero.
LONG gl_flags; ;Some, uh flags. See above for bit defi
itions.
LONG gl_rfu2; ;Make SURE you leave these two zeroed al
o.
LABEl gl_SIZEOF
; Remember, if you don't want to go through the hassle of
; initializing a ExtendedColorRequester structure, you can always just call
; ColorRequester (as opposed to ExtendedColorRequester). ColorRequester
; just takes a single parameter, in D0, the color that should start out
; being highlit. It returns a single value, the color that was selected at
; the end.
; This structure is for use with the ExtendedColorRequester (_not_,
; the ColorRequester) function.
STRUCTURE ExtendedColorRequesterStruct,0
LONG ecr_defcolor ;The color that is initially highlit.
APTR ecr_window ;The window the 'requester' opens up in
zero normally).
LONG ecr_rfu1 ;Who knows what these will be us
d for,
LONG ecr_rfu2 ;but I'm sure we'll think of som
thing.
LONG ecr_rfu3 ;Until then, just keep these zer
ed.
LONG ecr_rfu4 ;Okay?
LONG ecr_rfu5
LABEL ecr_SIZEOF
IFND DSIZE
DSIZE EQU 130
FCHARS EQU 30
ENDC
WILDLENGTH EQU 30
FRQSHOWINFOB EQU 0 ;Set this in Flags if you want .info files to sh
w. They default to hidden.
FRQEXTSELECTB EQU 1 ;Set this in Flags if you want extended select.
Default is not.
FRQCACHINGB EQU 2 ;Set this in Flags if you want directory caching
Default is not.
FRQGETFONTSB EQU 3 ;Set this in Flags if you want a font requester
ather than a file requester.
FRQINFOGADGETB EQU 4 ;Set this in Flags if you want a hide-info files
gadget.
FRQHIDEWILDSB EQU 5 ;Set this in Flags if you DON'T want 'show' and
hide' string gadgets.
FRQABSOLUTEXYB EQU 6 ;Use absolute x,y positions rather than centerin
on mouse.
FRQCACHEPURGEB EQU 7 ;Purge the cache whenever the directory date sta
p changes if this is set.
FRQNOHALFCACHEB EQU 8 ;Don't cache a directory unless it is co
pletely read in when this is set.
FRQNOSORTB EQU 9 ;Set this in Flags if you DON'T want sorted dire
tories.
FRQNODRAGB EQU 10 ;Set this in Flags if you DON'T want a drag bar
nd depth gadgets.
FRQSAVINGB EQU 11 ;Set this bit if you are selecting a file to sav
to.
FRQLOADINGB EQU 12 ;Set this bit if you are selecting a file(s) to
oad from.
;These two bits (save and load) aren't currently
used for
;anything, but they may be in the future, so you
should
;remember to set them. Also, these bits make it
easier if
;somebody wants to customize the file requester
or their
;machine. They can make it behave differently f
r loading
;vs saving.
FRQSHOWINFOM EQU 1<<FRQSHOWINFOB
FRQEXTSELECTM EQU 1<<FRQEXTSELECTB
FRQCACHINGM EQU 1<<FRQCACHINGB
FRQGETFONTSM EQU 1<<FRQGETFONTSB
FRQINFOGADGETM EQU 1<<FRQINFOGADGETB
FRQHIDEWILDSM EQU 1<<FRQHIDEWILDSB
FRQABSOLUTEXYM EQU 1<<FRQABSOLUTEXYB
FRQCACHEPURGEM EQU 1<<FRQCACHEPURGEB
FRQNOHALFCACHEM EQU 1<<FRQNOHALFCACHEB
FRQNOSORTM EQU 1<<FRQNOSORTB
FRQNODRAGM EQU 1<<FRQNODRAGB
FRQSAVINGM EQU 1<<FRQSAVINGB
FRQLOADINGM EQU 1<<FRQLOADINGB
STRUCTURE ESStructure,0 ;ExtendedSelectStructure
LONG es_NextFile ;This must be the first element!
WORD es_NameLength ;File name length, not including the ter
inating zero.
WORD es_Pad
APTR es_Node ;Node that the user has extended selecte
.
LABEL es_SIZEOF
; When using extended select, the directory pointer is required
; since only the file names are stored in the frq_ExtendedSelect linked
; list. When not using extended select, you can either have frq_Dir and
; frq_File point be initialized, or you can have frq_PathName initialized,
; or both. frq_PathName will contain the concatenation of the file and
; directory chosen.
STRUCTURE .FileRequester,0
UWORD frq_VersionNumber ;MUST BE ZERO!!!!!!!!!!!!!!!!!!
;You will probably want to initialize these three variables.
APTR frq_Title ; Hailing text
APTR frq_Dir ; Directory array (must be DSIZE
1 characters long)
APTR frq_File ; Filename array (must be FCHARS
1 characters long)
;If you initialize this variable then the file requester will place the
omplete path name in here on exit.
APTR frq_PathName ; Complete path name array - (mu
t be DSIZE+FCHARS+2 long)
;If you want the file requester to pop up on your custom screen, put one
of your window pointers here.
;Or better yet, you can leave this field zeroed and put a pointer to one
of your windows in the
;pr_WindowPtr field in your process structure.
APTR frq_Window ; Window requesting or NULL
;Initialize these to the number of lines and columns you want to appear
n the inner window that
;displays the file names. If you leave these set to zero then default v
lues will be used.
UWORD frq_MaxExtendedSelect ; Zero implies a maximum of 6553
, as long as FRQEXTSELECT is set.
UWORD frq_numlines ; Number of lines in file window
UWORD frq_numcolumns ; Number of columns in file wind
w.
UWORD frq_devcolumns ; Number of columns in device wi
dow.
ULONG frq_Flags ; Various - umm - flags. See ab
ve for more info.
UWORD frq_dirnamescolor ;These five colors will all default
UWORD frq_filenamescolor ;to color one if you don't specify
UWORD frq_devicenamescolor ;a color (ie; if you specify color zero)
UWORD frq_fontnamescolor ;If you want color zero to be used, spec
fy
UWORD frq_fontsizescolor ;color 32, or some other too large numbe
;which mods down to zero.
UWORD frq_detailcolor ;If both of these colors are specified a
UWORD frq_blockcolor ;zero then the block pen will be set to
ne.
UWORD frq_gadgettextcolor ;The color for the text of the five bool
an gadgets. Defaults to 1.
UWORD frq_textmessagecolor ;The color for the message at the screen
top. Defaults to 1.
UWORD frq_stringnamecolor ;The color for the words Drawer, File, H
de and Show. Defaults to 3.
UWORD frq_stringgadgetcolor ;The color for the borders of the string
gadgets. Defaults to 3.
;Unfortunately it is not possible to spe
ify
;the color of the actual text in an Intu
tion
;string gadget.
UWORD frq_boxbordercolor ;The color for the boxes around the file
and directory areas. Defaults to 3.
UWORD frq_gadgetboxcolor ;The color for the boxes around the five
boolean gadgets. Defaults to 3.
STRUCT frq_RFU_Stuff,36 ;This area, which is reserved fo
;future use, should all be zero.
STRUCT frq_DirDateStamp,ds_SIZEOF ; A copy of the cached directori
s date stamp.
; There should never be any need
to change this.
UWORD frq_WindowLeftEdge; ;These two fields are only used
hen the
UWORD frq_WindowTopEdge; ;FRQABSOLUTEXY flag is set. The
specify
;the location of the upper left
and
;corner of the window.
UWORD frq_FontYSize ;These fields are used to return
the selected
UWORD frq_FontStyle ;font size and style, only appli
able when the
;font bit is set.
;If you set the extended select bit and the user extended selects, the l
st of filenames will start from here.
APTR frq_ExtendedSelect ; Linked list of ESStructures if
more than one filename is chosen.
;All of the following variables you shouldn't need to touch. They conta
n fields that the file
;requester sets and likes to preserve over calls, just to make life easi
r for the user.
STRUCT frq_Hide,WILDLENGTH+2 ; Wildcards for files to hide.
STRUCT frq_Show,WILDLENGTH+2 ; Wildcards for files to show.
WORD frq_FileBufferPos ; Cursor's position and first
WORD frq_FileDispPos ; displayed character number in
WORD frq_DirBufferPos ; the three string gadgets. No
WORD frq_DirDispPos ; need to initialized these if
WORD frq_HideBufferPos ; you don't want to.
WORD frq_HideDispPos
WORD frq_ShowBufferPos
WORD frq_ShowDispPos
; The following fields are PRIVATE! Don't go messing with them or
; wierd things may/will happen. If this isn't enough of a warning, go read
; the one in intuition.h, that should scare you off.
APTR frq_Memory ; Memory allocated for dir entri
s.
APTR frq_Memory2 ; Used for currently hidden file
.
APTR frq_Lock ; Contains lock on directories b
ing read across calls.
STRUCT frq_PrivateDirBuffer,DSIZE+2 ; Used for keeping a record of w
ich
; directory we have file names f
r.
APTR frq_FileInfoBlock
WORD frq_NumEntries
WORD frq_NumHiddenEntries
WORD frq_filestartnumber
WORD frq_devicestartnumber
LABEL frq_SIZEOF
; This is used with the RealTimeScroll function.
STRUCTURE ScrollStruct,0
ULONG ss_TopEntryNumber ;This is the ordinal number of the first
;displayed entry.
ULONG ss_NumEntries ;This is the total number of entries in
;the list.
UWORD ss_LineSpacing ;This is how many pixels high each entry
is.
ULONG ss_NumLines ;This is how many entries can be display
d simultaneously.
APTR ss_PropGadget ;This is a pointer to the prop gadget be
ng monitored.
APTR ss_RedrawAll ;This routine is used to redraw all of t
e
;entries when the user moves far enough
;that scrolling will take too long.
APTR ss_ReadMore ;An optional routine that is called when
;the scroll routine is waiting for movem
nt.
;This allows reading of new data while r
al
;time scrolling.
APTR ss_ScrollAndDraw ;This routine is called when the data ne
ds
;to be scrolled and updated. This routi
e is
;passed four long parameters (on the sta
k and
;in D0-D3) which are, respectively:
;D0 - entry number of first line to be d
awn.
;D1 - pixel offset to draw first line at
;D2 - amount to scroll before doing any
rawing.
;D3 - number of lines of data to draw.
WORD versionnumber ;Make SURE this is set to zero.
LONG rfu1 ;Make SURE you leave these two zeroed al
o.
LONG rfu2 ;Make SURE you leave these two zeroed al
o.
LABEL ss_SIZEOF
STRUCTURE Arrows,0
STRUCT ArrowUp,20
STRUCT ArrowDown,20
STRUCT ArrowLeft,18
STRUCT ArrowRight,18
STRUCT Letter_R,20
STRUCT Letter_G,20
STRUCT Letter_B,20
STRUCT Letter_H,20
STRUCT Letter_S,20
STRUCT Letter_V,20
LABEL chipstuff_SIZEOF
; These are the positions relative to the rl_Images pointer.
;ie
; MOVE.L rl_Images(A6),A0
; ADD.L #ArrowLeft,A0 ;A0 now points at the left arrow.
STRUCTURE ReqLib,LIB_SIZE
APTR rl_SysLib
APTR rl_DosLib ;These must be kept in the same order,
APTR rl_IntuiLib ;the library expunge code depends on it.
APTR rl_GfxLib ;
APTR rl_SegList
APTR rl_Images ;pointer to the arrow images.
BYTE rl_Flags
BYTE rl_Pad
APTR rl_ConsoleDev ;for RawKeyToAscii
APTR rl_ConsoleHandle ;so we can close the device later
LABEL MyLib_Sizeof
LIBINIT
LIBDEF _LVOCenter
LIBDEF _LVOSetSize
LIBDEF _LVOSetLocation
LIBDEF _LVOReadLocation
LIBDEF _LVOFormat
LIBDEF _LVOFakeFunction1 ;Old function. Don't use.
LIBDEF _LVOFakeFunction2 ;Old function. Don't use.
LIBDEF _LVOFakeFunction3 ;Old function. Don't use.
LIBDEF _LVOFakeFunction4 ;Old function. Don't use.
LIBDEF _LVOFileRequester
LIBDEF _LVOColorRequester
LIBDEF _LVODrawBox
LIBDEF _LVOMakeButton
LIBDEF _LVOMakeScrollBar
LIBDEF _LVOPurgeFiles
LIBDEF _LVOGetFontHeightAndWidth
LIBDEF _LVOMakeGadget
LIBDEF _LVOMakeString
LIBDEF _LVOMakeProp
LIBDEF _LVOLinkGadget
LIBDEF _LVOLinkStringGadget
LIBDEF _LVOLinkPropGadget
LIBDEF _LVOGetString
LIBDEF _LVORealTimeScroll
LIBDEF _LVOTextRequest
LIBDEF _LVOGetLong
LIBDEF _LVORawKeyToAscii
LIBDEF _LVOExtendedColorRequester
REQNAME MACRO
DC.B 'req.library',0
ENDM
; This macro will open the RequesterLibrary for you. At the end, A6 will
;contain the library and D0/A0 will be correct. (What dos passed you)
OpenReq MACRO
BRA.S opnrq
dname DC.B 'dos.library',0
rlibmsg DC.B 'You need V1+ of '
ReqName REQNAME
DC.B 10,13,0
;;;rliblng EQU *-rlibmsg
rliblng EQU 30
DS.W 0
EVEN
opnrq:
MOVEM.L d0/a0,-(sp)
MOVE.L 4,A6
LEA.L ReqName,a1
MOVEQ.L #ReqVersion,d0
SYS OpenLibrary
TST.L d0
BNE.S itsokay
LEA dname,A1
SYS OpenLibrary
TST.L D0
BEQ.S 1$
MOVE.L D0,A6
SYS Output
MOVE.L d0,d1
BEQ.S 1$ ;No output. Phooey.
MOVE.L #rlibmsg,d2 ;Tell user he needs to find library.
MOVE.L #rliblng,D3
SYS Write
1$: ADDQ #8,sp
RTS
itsokay:
MOVE.L D0,A6
MOVEM.L (SP)+,D0/A0
ENDM
ENDC